home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / src / CdBS_KQSrc0_3.lha / KaliosysQuantrum / Init.s < prev    next >
Text File  |  1997-11-04  |  9KB  |  351 lines

  1. *
  2. * CdBSian Obviously Universal & Interactive Nonsense (COUIN)
  3. * (Absurdité CdBSienne Manifestement Universelle et Interactive)
  4. * ©1997, CdBS Software (MORB)
  5. * Initialisation
  6. * $Id: Init.s 0.10 1997/11/03 20:45:26 MORB Exp MORB $
  7. *
  8.  
  9. Startup:
  10.          move.l    (AbsExecBase).w,a6
  11.          sub.l     a1,a1
  12.          CALL      FindTask
  13.          move.l    d0,a4
  14.          tst.l     pr_CLI(a4)
  15.          bne.s     _Init
  16.          lea       pr_MsgPort(a4),a0
  17.          CALL      WaitPort
  18.          lea       pr_MsgPort(a4),a0
  19.          CALL      GetMsg
  20.          move.l    d0,-(a7)
  21.          bsr.s     _Init
  22.          move.l    (AbsExecBase).w,a6
  23.          move.l    (a7)+,a1
  24.          CALL      ReplyMsg
  25.          moveq     #0,d0
  26.          rts
  27.  
  28. _Init:
  29.          clr.l     pr_WindowPtr(a4)
  30.          move.l    (AbsExecBase).w,a6
  31.          lea       DosName(pc),a1
  32.          moveq     #39,d0
  33.          CALL      OpenLibrary
  34.          move.l    d0,Dos_Base
  35.          beq       CleanUp
  36.          lea       IntName(pc),a1
  37.          moveq     #39,d0
  38.          CALL      OpenLibrary
  39.          move.l    d0,Int_Base
  40.          beq       CleanUp
  41.          lea       GfxName,a1
  42.          moveq     #39,d0
  43.          CALL      OpenLibrary
  44.          move.l    d0,Gfx_Base
  45.          beq       CleanUp
  46.          lea       LowName,a1
  47.          moveq     #40,d0
  48.          CALL      OpenLibrary
  49.          move.l    d0,Low_Base
  50.          beq       CleanUp
  51.  
  52.          moveq     #0,d0
  53.          move.l    #512,d1
  54.          move.l    d1,d2
  55.          CALL      CreatePool
  56.          move.l    d0,_ObjMemPool
  57.          beq       CleanUp
  58.  
  59.          move.l    Dos_Base,a6
  60.          moveq     #DOS_EXALLCONTROL,d1
  61.          CALL      AllocDosObject
  62.          move.l    d0,FRExallCtrl
  63.          beq       CleanUp
  64.  
  65.          moveq     #DOS_FIB,d1
  66.          CALL      AllocDosObject
  67.          move.l    d0,FRFib
  68.          beq       CleanUp
  69.  
  70.          move.l    Low_Base,a6
  71.          moveq     #0,d0
  72.          pea       TAG_DONE
  73.          pea       SJA_TYPE_MOUSE
  74.          pea       SJA_Type
  75.          move.l    a7,a1
  76.          CALL      SetJoyPortAttrsA
  77.          lea       12(a7),a7
  78.          tst.l     d0
  79.          ;beq.s     CleanUp
  80.  
  81.          moveq     #0,d0
  82.          CALL      ReadJoyPort
  83.  
  84.          moveq     #1,d0
  85.          pea       TAG_DONE
  86.          pea       SJA_TYPE_JOYSTK
  87.          pea       SJA_Type
  88.          move.l    a7,a1
  89.          CALL      SetJoyPortAttrsA
  90.          lea       12(a7),a7
  91.          tst.l     d0
  92.          beq       CleanUp
  93.  
  94.          moveq     #1,d0
  95.          CALL      ReadJoyPort
  96.  
  97.          lea       _KeyBoardInt,a0
  98.          sub.l     a1,a1
  99.          CALL      AddKBInt
  100.          move.l    d0,KBIHandle
  101.          beq       CleanUp
  102.  
  103.          move.l    (AbsExecBase).w,a6
  104.  
  105.          move.l    #BufferSize+8,d0
  106.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  107.          CALL      AllocVec
  108.          move.l    d0,BpMem1
  109.          beq       CleanUp
  110.          addq.l    #8,d0
  111.          and.l     #$fffffff8,d0
  112.          move.l    d0,_Bitmap1
  113.  
  114.          move.l    #BufferSize+8,d0
  115.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  116.          CALL      AllocVec
  117.          move.l    d0,BpMem2
  118.          beq       CleanUp
  119.          addq.l    #8,d0
  120.          and.l     #$fffffff8,d0
  121.          move.l    d0,_Bitmap2
  122.  
  123.          move.l    #BufferSize+8,d0
  124.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  125.          CALL      AllocVec
  126.          move.l    d0,BpMem3
  127.          beq       CleanUp
  128.          addq.l    #8,d0
  129.          and.l     #$fffffff8,d0
  130.          move.l    d0,_Bitmap3
  131.  
  132.          move.l    #BufferSize+8,d0
  133.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  134.          CALL      AllocVec
  135.          move.l    d0,CBpMem
  136.          beq       CleanUp
  137.          addq.l    #8,d0
  138.          and.l     #$fffffff8,d0
  139.          move.l    d0,_ClearBitmap
  140.  
  141.          move.l    #BufferSize+8,d0
  142.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  143.          CALL      AllocVec
  144.          move.l    d0,BpMem4
  145.          beq       CleanUp
  146.          addq.l    #8,d0
  147.          and.l     #$fffffff8,d0
  148.          move.l    d0,_Bitmap4
  149.  
  150.          move.l    #BufferSize+8,d0
  151.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  152.          CALL      AllocVec
  153.          move.l    d0,BpMem5
  154.          beq       CleanUp
  155.          addq.l    #8,d0
  156.          and.l     #$fffffff8,d0
  157.          move.l    d0,_Bitmap5
  158.  
  159.          move.l    #BufferSize+8,d0
  160.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  161.          CALL      AllocVec
  162.          move.l    d0,BpMem6
  163.          beq       CleanUp
  164.          addq.l    #8,d0
  165.          and.l     #$fffffff8,d0
  166.          move.l    d0,_Bitmap6
  167.  
  168.          move.l    #BufferSize+8,d0
  169.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  170.          CALL      AllocVec
  171.          move.l    d0,CBpMem2
  172.          beq       CleanUp
  173.          addq.l    #8,d0
  174.          and.l     #$fffffff8,d0
  175.          move.l    d0,_ClearBitmap2
  176.  
  177.          move.l    #GuiBufferSize+8,d0
  178.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  179.          CALL      AllocVec
  180.          move.l    d0,_GuiBpMem
  181.          beq       CleanUp
  182.          addq.l    #8,d0
  183.          and.l     #$fffffff8,d0
  184.          move.l    d0,_GuiBitmap
  185.  
  186.          move.l    #GuiSelBufferSize+8,d0
  187.          move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  188.          CALL      AllocVec
  189.          move.l    d0,_GuiSelMem
  190.          beq.s     CleanUp
  191.          addq.l    #8,d0
  192.          and.l     #$fffffff8,d0
  193.          move.l    d0,_GuiSelBitmap
  194.  
  195.          move.l    Gfx_Base,a6
  196.          CALL      OwnBlitter
  197.          move.l    gb_ActiView(a6),d7
  198.          sub.l     a1,a1
  199.          CALL      LoadView
  200.  
  201.          move.l    (AbsExecBase).w,a6
  202.          ;CALL      Disable
  203.          CALL      SuperState
  204.          move.l    d0,_SStack
  205.          ;move.l    a7,_A7Save
  206.  
  207.          bsr       _Main
  208.  
  209. Couic:
  210.          move.l    (AbsExecBase).w,a6
  211.          move.l    _SStack,d0
  212.          CALL      UserState
  213.          ;CALL      Enable
  214.  
  215.          ;lea       _Main(pc),a5
  216.          ;CALL      Supervisor
  217.          move.l    Gfx_Base,a6
  218.          move.l    Int_Base,a1
  219.          lea       ib_ViewLord(a1),a1
  220.          CALL      LoadView
  221.          CALL      DisownBlitter
  222.          move.l    Int_Base,a6
  223.          CALL      RemakeDisplay
  224. CleanUp:
  225.          move.l    (AbsExecBase).w,a6
  226.  
  227.          move.l    _GuiSelMem,a1
  228.          CALL      FreeVec
  229.          move.l    _GuiBpMem,a1
  230.          CALL      FreeVec
  231.  
  232.          move.l    CBpMem2(pc),a1
  233.          CALL      FreeVec
  234.          move.l    BpMem6(pc),a1
  235.          CALL      FreeVec
  236.          move.l    BpMem5(pc),a1
  237.          CALL      FreeVec
  238.          move.l    BpMem4(pc),a1
  239.          CALL      FreeVec
  240.  
  241.          move.l    CBpMem(pc),a1
  242.          CALL      FreeVec
  243.          move.l    BpMem3(pc),a1
  244.          CALL      FreeVec
  245.          move.l    BpMem2(pc),a1
  246.          CALL      FreeVec
  247.          move.l    BpMem1(pc),a1
  248.          CALL      FreeVec
  249.  
  250.          move.l    Low_Base,a6
  251.          move.l    KBIHandle(pc),a1
  252.          CALL      RemKBInt
  253.  
  254.          moveq     #0,d0
  255.          pea       TAG_DONE
  256.          pea       0
  257.          pea       SJA_Reinitialize
  258.          move.l    a7,a1
  259.          CALL      SetJoyPortAttrsA
  260.          lea       12(a7),a7
  261.  
  262.          moveq     #1,d0
  263.          pea       TAG_DONE
  264.          pea       0
  265.          pea       SJA_Reinitialize
  266.          move.l    a7,a1
  267.          CALL      SetJoyPortAttrsA
  268.          lea       12(a7),a7
  269.  
  270.          move.l    Dos_Base,d0
  271.          beq.s     .NoDos
  272.          move.l    d0,a6
  273.  
  274.          move.l    FRFib,d2
  275.          beq.s     .NoFib
  276.          moveq     #DOS_FIB,d1
  277.          CALL      FreeDosObject
  278. .NoFib:
  279.  
  280.          move.l    FRExallCtrl,d2
  281.          beq.s     .NoDos
  282.          moveq     #DOS_EXALLCONTROL,d1
  283.          CALL      FreeDosObject
  284. .NoDos:
  285.  
  286.          move.l    (AbsExecBase).w,a6
  287.          move.l    _ObjMemPool(pc),d0
  288.          beq.s     .NoMemPool
  289.          move.l    d0,a0
  290.          CALL      DeletePool
  291. .NoMemPool
  292.          move.l    Low_Base,a1
  293.          CALL      CloseLibrary
  294.          move.l    Gfx_Base,a1
  295.          CALL      CloseLibrary
  296.          move.l    Int_Base,a1
  297.          CALL      CloseLibrary
  298.          move.l    Dos_Base,a1
  299.          CALL      CloseLibrary
  300.          moveq     #0,d0
  301.          rts
  302. _SStack:
  303.          ds.l      1
  304. Dos_Base:
  305.          ds.l      1
  306. Int_Base:
  307.          ds.l      1
  308. Gfx_Base:
  309.          ds.l      1
  310. Low_Base:
  311.          ds.l      1
  312. _ObjMemPool:
  313.          ds.l      1
  314. FRExallCtrl:
  315.          ds.l      1
  316. FRFib:
  317.          ds.l      1
  318. KBIHandle:
  319.          ds.l      1
  320. BpMem1:
  321.          ds.l      1
  322. BpMem2:
  323.          ds.l      1
  324. BpMem3:
  325.          ds.l      1
  326. CBpMem:
  327.          ds.l      1
  328. BpMem4:
  329.          ds.l      1
  330. BpMem5:
  331.          ds.l      1
  332. BpMem6:
  333.          ds.l      1
  334. CBpMem2:
  335.          ds.l      1
  336. DosName:
  337.          dc.b      "dos.library",0
  338. IntName:
  339.          dc.b      "intuition.library",0
  340. GfxName:
  341.          dc.b      "graphics.library",0
  342. LowName:
  343.          dc.b      "lowlevel.library",0
  344.          even
  345. _Gna:
  346.          dc.l      -1
  347. _Debug:
  348.          ds.l      2
  349. _Debug2:
  350.          ds.l      2
  351.